package com.example.testapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

public class AsynctTask extends AppCompatActivity {
    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_asynct_task);

        textView = findViewById(R.id.text_viewT);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.e("TAGASD","TEST");
            }
        });

        // 如果在主线程执行耗时操作会出现 Application Not Responsed(ANR)错误
        // 执行这段代码在 程序退出时会崩溃
//        for(int i= 0; i<100000; i++){
//            Log.e("Tag",String.valueOf(i));
//        }
        new MyAsyncTask().execute();
    }

    /**
     * String  doInBackground 的参数
     *
     * Integer  onProgressUpdate
     *
     * Boolean  doInBackground 返回值
     *
     * **/

    class MyAsyncTask extends AsyncTask<String,Integer,Boolean>{

        @Override
        protected void onProgressUpdate(Integer... values) {
            /**
             *  在方法默认在子线程中执行
             * **/
            textView.setText(String.valueOf(values[0])+"%");
            super.onProgressUpdate();
        }

        @Override
        protected void onPreExecute() {
            /**
             *  在方法默认在子线程中执行
             * **/
            textView.setText("执行前");
            super.onPreExecute();
        }

        /**
         * String... strings  可变参数
         * 获取传值
         * strings[0]  strings[1]
         *
         *
         * **/

        @Override
        protected Boolean doInBackground(String... strings) {
            /**
             *
             *  这个方法默认在子线程中执行
             * **/
            for(int i= 0; i<100000; i++){
                Log.e("Tag",String.valueOf(i));
                Log.e("Tag5",String.valueOf(i/100000));
                // 如果操作失败了 要根据结果去操作下一步
                publishProgress(i *100/100000);
            }
            // 运行后 返回值 给onPostExecute
            return false;
        }
        // 如果 结果返回Boolean  这里也会接收Boolean
        @Override
        protected void onPostExecute(Boolean unused) {
            /**
             *  在方法默认在子线程中执行
             * **/

            super.onPostExecute(unused);
            if(unused){
                textView.setText("操作之后true");
            }else{
                textView.setText("操作之后false");
            }
        }
    }
}